package com.start.workflow.common.std;

import com.start.common.entity.StartBaseUser;
import com.start.workflow.common.model.StartActBusinessModel;
import com.start.workflow.common.model.StartActConfigModel;

import java.util.List;

public interface IStartActCandidateLoad<T extends StartBaseUser> extends IStartActType {

    /**
     * 排序序号 数字越小月靠前
     *
     * @return int
     */
    default int order() {
        return 99;
    }

    /**
     * 类别
     *
     * @return String
     */
    String categoryKey();

    /**
     * 类别名称
     *
     * @return String
     */
    default String categoryName() {
        return categoryKey();
    }

    /**
     * 类型全局唯一标识
     *
     * @return
     */
    @Override
    default String type() {
        return actCandidateType();
    }

    /**
     * 候选人类型
     *
     * @return String
     */
    String actCandidateType();


    /**
     * 候选者类型名称
     *
     * @return String
     */
    default String actCandidateLabel() {
        return actCandidateType();
    }

    /**
     * 候选人描述
     *
     * @return
     */
    default String actCandidateDesc() {
        return null;
    }

    /**
     * 是否全局
     *
     * @return boolean
     */
    default boolean isGlobal() {
        return true;
    }

    /**
     * 加载候选人
     *
     * @param curActBus
     * @param config
     * @return List<T>
     */
    List<T> load( StartActBusinessModel curActBus,StartActConfigModel config);

    /**
     * 检查配置值
     *
     * @param confVal
     * @return
     */
    default boolean checkConfig(String confVal) {
        return true;
    }
}
